Many modern software development platforms have integrated layers that support a full spectrum of application life cycle activities such as an integrated development environment (IDE) for application development, a runtime for execution and debugging, a web service for public consumption of hosted applications, a database for persistency, and/or other layers for other purposes. Environments having such layers have become a trend in modern cloud-computing networks.
For computing languages such as JAVASCRIPT, used for application development, software engineers (“developers,” “software developers,” etc.) increasingly need proper IDE tools to make the usage of the computing languages more productive. However, the lack of such IDE tools often forces developers to instead use sophisticated text editors. The lack of an advanced code analysis infrastructure is one of the reasons for the non-existence of such IDEs.
Changes in a software platform architecture can present opportunities and challenges in how modern software applications can be designed, developed, analyzed, executed, and/or maintained, and the changes can influence software development using IDEs. For example, an IDE based in a cloud platform can be accessed through web services such that a developer can use in an Internet browser. Current implementations of such cloud-based IDEs are often primitive and may lack features common to dedicated IDEs installed locally on a developer's computer, such as ECLIPSE, NETBEANS, and VISUAL STUDIO. Examples of features that may be lacking from primitive IDEs can include code completion, refactoring, outlining, and/or other features, some of which may require static or runtime analysis of application code. Ideally, such analyses should be easily available, aggregated and ready for use by a user, such as a software developer. These conditions can be considered, for example, in the design and development of cloud-based distributed software development environments.
An important difference in a cloud-based development environment as opposed to locally-installed IDE's is that a cloud-based IDE is generally shared by multiple or all of the developers working on the platform. With traditional IDEs, such as ECLIPSE, the IDE is typically installed separately on each developer's computer, so that the IDE's usage is isolated from others (apart, for example, from the use of versioning control to synchronize code). In the cloud-based IDE, for example, information can be more readily and easily shared among developers, which can be beneficial in scenarios such as code reuse, team collaboration, and/or other scenarios. An example consequence is that, when code analysis is designed and built for such a shared IDE, the same analysis should not be run separately by each developer repeatedly.
When developing software applications, having an understanding of the source code (simply called “code” from here on) is important for developers. More specifically, it is crucial to understand dependencies between different code artifacts, e.g., functions and/or other software components. Understanding dependencies can be important for both pure software development tasks, as well as for tasks that deal with existing code artifacts such as refactoring and maintenance. In some implementations, code visualizations, including visualizations that are part of a cloud-based computer code analysis, can be used in making the structure of a program more understandable, e.g., aiding the developer in understanding the code.